// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace Elastic.Clients.Elasticsearch.IndexLifecycleManagement;

public partial class IndexLifecycleManagementNamespacedClient : NamespacedClientProxy
{
	/// <summary>
	/// <para>
	/// Initializes a new instance of the <see cref="IndexLifecycleManagementNamespacedClient"/> class for mocking.
	/// </para>
	/// </summary>
	protected IndexLifecycleManagementNamespacedClient() : base()
	{
	}

	internal IndexLifecycleManagementNamespacedClient(ElasticsearchClient client) : base(client)
	{
	}

	/// <summary>
	/// <para>
	/// Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteLifecycleResponse DeleteLifecycle(DeleteLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<DeleteLifecycleRequest, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteLifecycleResponse> DeleteLifecycleAsync(DeleteLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<DeleteLifecycleRequest, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteLifecycleResponse DeleteLifecycle(DeleteLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteLifecycleResponse DeleteLifecycle(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new DeleteLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual DeleteLifecycleResponse DeleteLifecycle(Elastic.Clients.Elasticsearch.Name name, Action<DeleteLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new DeleteLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteLifecycleResponse> DeleteLifecycleAsync(DeleteLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteLifecycleResponse> DeleteLifecycleAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Deletes the specified lifecycle policy definition. You cannot delete policies that are currently in use. If the policy is being used to manage any indices, the request fails and returns an error.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-delete-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<DeleteLifecycleResponse> DeleteLifecycleAsync(Elastic.Clients.Elasticsearch.Name name, Action<DeleteLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new DeleteLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<DeleteLifecycleRequestDescriptor, DeleteLifecycleResponse, DeleteLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(GetLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetLifecycleRequest, GetLifecycleResponse, GetLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(GetLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequest, GetLifecycleResponse, GetLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(GetLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(Elastic.Clients.Elasticsearch.Name? name)
	{
		var descriptor = new GetLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(Elastic.Clients.Elasticsearch.Name? name, Action<GetLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new GetLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle()
	{
		var descriptor = new GetLifecycleRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetLifecycleResponse GetLifecycle(Action<GetLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new GetLifecycleRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(GetLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(Elastic.Clients.Elasticsearch.Name? name, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(Elastic.Clients.Elasticsearch.Name? name, Action<GetLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetLifecycleRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves a lifecycle policy.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetLifecycleResponse> GetLifecycleAsync(Action<GetLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetLifecycleRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetLifecycleRequestDescriptor, GetLifecycleResponse, GetLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves the current index lifecycle management (ILM) status.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIlmStatusResponse GetStatus(GetIlmStatusRequest request)
	{
		request.BeforeRequest();
		return DoRequest<GetIlmStatusRequest, GetIlmStatusResponse, GetIlmStatusRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Retrieves the current index lifecycle management (ILM) status.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIlmStatusResponse> GetStatusAsync(GetIlmStatusRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<GetIlmStatusRequest, GetIlmStatusResponse, GetIlmStatusRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves the current index lifecycle management (ILM) status.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIlmStatusResponse GetStatus(GetIlmStatusRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves the current index lifecycle management (ILM) status.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIlmStatusResponse GetStatus()
	{
		var descriptor = new GetIlmStatusRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves the current index lifecycle management (ILM) status.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual GetIlmStatusResponse GetStatus(Action<GetIlmStatusRequestDescriptor> configureRequest)
	{
		var descriptor = new GetIlmStatusRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retrieves the current index lifecycle management (ILM) status.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIlmStatusResponse> GetStatusAsync(GetIlmStatusRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves the current index lifecycle management (ILM) status.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIlmStatusResponse> GetStatusAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIlmStatusRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retrieves the current index lifecycle management (ILM) status.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-get-status.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<GetIlmStatusResponse> GetStatusAsync(Action<GetIlmStatusRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new GetIlmStatusRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<GetIlmStatusRequestDescriptor, GetIlmStatusResponse, GetIlmStatusRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and
	/// attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+
	/// Using node roles enables ILM to automatically move the indices between data tiers.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataTiersResponse MigrateToDataTiers(MigrateToDataTiersRequest request)
	{
		request.BeforeRequest();
		return DoRequest<MigrateToDataTiersRequest, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and
	/// attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+
	/// Using node roles enables ILM to automatically move the indices between data tiers.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataTiersResponse> MigrateToDataTiersAsync(MigrateToDataTiersRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<MigrateToDataTiersRequest, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and
	/// attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+
	/// Using node roles enables ILM to automatically move the indices between data tiers.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataTiersResponse MigrateToDataTiers(MigrateToDataTiersRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and
	/// attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+
	/// Using node roles enables ILM to automatically move the indices between data tiers.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataTiersResponse MigrateToDataTiers()
	{
		var descriptor = new MigrateToDataTiersRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and
	/// attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+
	/// Using node roles enables ILM to automatically move the indices between data tiers.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MigrateToDataTiersResponse MigrateToDataTiers(Action<MigrateToDataTiersRequestDescriptor> configureRequest)
	{
		var descriptor = new MigrateToDataTiersRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and
	/// attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+
	/// Using node roles enables ILM to automatically move the indices between data tiers.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataTiersResponse> MigrateToDataTiersAsync(MigrateToDataTiersRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and
	/// attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+
	/// Using node roles enables ILM to automatically move the indices between data tiers.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataTiersResponse> MigrateToDataTiersAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new MigrateToDataTiersRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and
	/// attribute-based allocation filters to using data tiers, and optionally deletes one legacy index template.+
	/// Using node roles enables ILM to automatically move the indices between data tiers.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-migrate-to-data-tiers.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MigrateToDataTiersResponse> MigrateToDataTiersAsync(Action<MigrateToDataTiersRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new MigrateToDataTiersRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<MigrateToDataTiersRequestDescriptor, MigrateToDataTiersResponse, MigrateToDataTiersRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep(MoveToStepRequest request)
	{
		request.BeforeRequest();
		return DoRequest<MoveToStepRequest, MoveToStepResponse, MoveToStepRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync(MoveToStepRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<MoveToStepRequest, MoveToStepResponse, MoveToStepRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>(MoveToStepRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<MoveToStepRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>()
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep<TDocument>(Action<MoveToStepRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep(MoveToStepRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new MoveToStepRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual MoveToStepResponse MoveToStep(Elastic.Clients.Elasticsearch.IndexName index, Action<MoveToStepRequestDescriptor> configureRequest)
	{
		var descriptor = new MoveToStepRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(MoveToStepRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<MoveToStepRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync<TDocument>(Action<MoveToStepRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor<TDocument>, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync(MoveToStepRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Manually moves an index into the specified step and executes that step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-move-to-step.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<MoveToStepResponse> MoveToStepAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<MoveToStepRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new MoveToStepRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<MoveToStepRequestDescriptor, MoveToStepResponse, MoveToStepRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutLifecycleResponse PutLifecycle(PutLifecycleRequest request)
	{
		request.BeforeRequest();
		return DoRequest<PutLifecycleRequest, PutLifecycleResponse, PutLifecycleRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutLifecycleResponse> PutLifecycleAsync(PutLifecycleRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<PutLifecycleRequest, PutLifecycleResponse, PutLifecycleRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutLifecycleResponse PutLifecycle(PutLifecycleRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutLifecycleResponse PutLifecycle(Elastic.Clients.Elasticsearch.Name name)
	{
		var descriptor = new PutLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequest<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual PutLifecycleResponse PutLifecycle(Elastic.Clients.Elasticsearch.Name name, Action<PutLifecycleRequestDescriptor> configureRequest)
	{
		var descriptor = new PutLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutLifecycleResponse> PutLifecycleAsync(PutLifecycleRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutLifecycleResponse> PutLifecycleAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutLifecycleRequestDescriptor(name);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Creates a lifecycle policy. If the specified policy exists, the policy is replaced and the policy version is incremented.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<PutLifecycleResponse> PutLifecycleAsync(Elastic.Clients.Elasticsearch.Name name, Action<PutLifecycleRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new PutLifecycleRequestDescriptor(name);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<PutLifecycleRequestDescriptor, PutLifecycleResponse, PutLifecycleRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy(RemovePolicyRequest request)
	{
		request.BeforeRequest();
		return DoRequest<RemovePolicyRequest, RemovePolicyResponse, RemovePolicyRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync(RemovePolicyRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequest, RemovePolicyResponse, RemovePolicyRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>(RemovePolicyRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>()
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy<TDocument>(Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy(RemovePolicyRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new RemovePolicyRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RemovePolicyResponse RemovePolicy(Elastic.Clients.Elasticsearch.IndexName index, Action<RemovePolicyRequestDescriptor> configureRequest)
	{
		var descriptor = new RemovePolicyRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(RemovePolicyRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync<TDocument>(Action<RemovePolicyRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor<TDocument>, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync(RemovePolicyRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Removes the assigned lifecycle policy and stops managing the specified index
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-remove-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RemovePolicyResponse> RemovePolicyAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<RemovePolicyRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RemovePolicyRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RemovePolicyRequestDescriptor, RemovePolicyResponse, RemovePolicyRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry(RetryRequest request)
	{
		request.BeforeRequest();
		return DoRequest<RetryRequest, RetryResponse, RetryRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync(RetryRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<RetryRequest, RetryResponse, RetryRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>(RetryRequestDescriptor<TDocument> descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<RetryRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>()
	{
		var descriptor = new RetryRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry<TDocument>(Action<RetryRequestDescriptor<TDocument>> configureRequest)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry(RetryRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry(Elastic.Clients.Elasticsearch.IndexName index)
	{
		var descriptor = new RetryRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual RetryResponse Retry(Elastic.Clients.Elasticsearch.IndexName index, Action<RetryRequestDescriptor> configureRequest)
	{
		var descriptor = new RetryRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(RetryRequestDescriptor<TDocument> descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<RetryRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>();
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync<TDocument>(Action<RetryRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor<TDocument>();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor<TDocument>, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync(RetryRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor(index);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Retries executing the policy for an index that is in the ERROR step.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-retry-policy.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<RetryResponse> RetryAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<RetryRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new RetryRequestDescriptor(index);
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<RetryRequestDescriptor, RetryResponse, RetryRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Start the index lifecycle management (ILM) plugin.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StartIlmResponse Start(StartIlmRequest request)
	{
		request.BeforeRequest();
		return DoRequest<StartIlmRequest, StartIlmResponse, StartIlmRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Start the index lifecycle management (ILM) plugin.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StartIlmResponse> StartAsync(StartIlmRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<StartIlmRequest, StartIlmResponse, StartIlmRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Start the index lifecycle management (ILM) plugin.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StartIlmResponse Start(StartIlmRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Start the index lifecycle management (ILM) plugin.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StartIlmResponse Start()
	{
		var descriptor = new StartIlmRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Start the index lifecycle management (ILM) plugin.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StartIlmResponse Start(Action<StartIlmRequestDescriptor> configureRequest)
	{
		var descriptor = new StartIlmRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Start the index lifecycle management (ILM) plugin.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StartIlmResponse> StartAsync(StartIlmRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Start the index lifecycle management (ILM) plugin.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StartIlmResponse> StartAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new StartIlmRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Start the index lifecycle management (ILM) plugin.
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-start.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StartIlmResponse> StartAsync(Action<StartIlmRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new StartIlmRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<StartIlmRequestDescriptor, StartIlmResponse, StartIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StopIlmResponse Stop(StopIlmRequest request)
	{
		request.BeforeRequest();
		return DoRequest<StopIlmRequest, StopIlmResponse, StopIlmRequestParameters>(request);
	}

	/// <summary>
	/// <para>
	/// Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StopIlmResponse> StopAsync(StopIlmRequest request, CancellationToken cancellationToken = default)
	{
		request.BeforeRequest();
		return DoRequestAsync<StopIlmRequest, StopIlmResponse, StopIlmRequestParameters>(request, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StopIlmResponse Stop(StopIlmRequestDescriptor descriptor)
	{
		descriptor.BeforeRequest();
		return DoRequest<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StopIlmResponse Stop()
	{
		var descriptor = new StopIlmRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequest<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	[Obsolete("Synchronous methods are deprecated and could be removed in the future.")]
	public virtual StopIlmResponse Stop(Action<StopIlmRequestDescriptor> configureRequest)
	{
		var descriptor = new StopIlmRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequest<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor);
	}

	/// <summary>
	/// <para>
	/// Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StopIlmResponse> StopAsync(StopIlmRequestDescriptor descriptor, CancellationToken cancellationToken = default)
	{
		descriptor.BeforeRequest();
		return DoRequestAsync<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StopIlmResponse> StopAsync(CancellationToken cancellationToken = default)
	{
		var descriptor = new StopIlmRequestDescriptor();
		descriptor.BeforeRequest();
		return DoRequestAsync<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor, cancellationToken);
	}

	/// <summary>
	/// <para>
	/// Halts all lifecycle management operations and stops the index lifecycle management (ILM) plugin
	/// </para>
	/// <para><see href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html">Learn more about this API in the Elasticsearch documentation.</see></para>
	/// </summary>
	public virtual Task<StopIlmResponse> StopAsync(Action<StopIlmRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
	{
		var descriptor = new StopIlmRequestDescriptor();
		configureRequest?.Invoke(descriptor);
		descriptor.BeforeRequest();
		return DoRequestAsync<StopIlmRequestDescriptor, StopIlmResponse, StopIlmRequestParameters>(descriptor, cancellationToken);
	}
}